home *** CD-ROM | disk | FTP | other *** search
- NOTEPAD - das Notizblatt-Accessory
- ----------------------------------
- Version 1.2 16.08.90
-
-
-
- NotePad - wozu?
- ---------------
- Bei vielen Gelegenheiten während der Arbeit am ST mußte ich mir Notizen
- machen: Telefonnummern, Progamm-Ausgaben, etc., etc. Also griff ich jedes-
- mal zu Papier und Kugelschreiber und hatte innerhalb kürzester Zeit einen
- nicht mehr überschaubaren Wust von fliegenden Zetteln angehäuft.
- Mit der Zeit wurde das lästig. Sehr lästig. So lästig, daß ich anfing, mir
- Gedanken zu machen, ob es sich bei diesem Problem nicht um eines handelt,
- dessen Lösung geradezu nach einer Accessory-Anwendung schreit:
- Ein kleines Programm, das jederzeit aus anderen (GEM-) Programmen heraus
- aufrufbar ist und die Notizen, die so anfallen, aufzunehmen in der Lage
- ist. Klingt an sich ganz einfach - aber während der Entwicklung von der
- Idee zum Programm fielen mir immer neue Anwendungsmöglichkeiten und weitere
- Anforderungen an den Funktionsumfang ein, so daß das Ganze schließlich doch
- einen ziemlichen Umfang angenommen hat.
- Die Arbeit hat sich aber gelohnt: Seitdem NotePad fertig ist greife ich nur
- noch äußerst selten zu Papier und Kuli; das meiste kriegt NotePad zu
- schlucken.
-
- Realisierung
- ------------
- NotePad soll Notizen aufnehmen - na schön. Aber wie?
- Ein Mini-Editor mußte her; 'Mini' weil das Programm als Accessory laufen
- soll und somit die ganze Zeit über den Speicher blockiert. Aber ein
- gewisses Maß an Komfort sollte der Editor auch bieten. Außerdem war da
- die Frage, wieviel Platz NotePad für Notizen zur Verfügung stellen sollte.
- Ich erinnerte mich an meinen guten alten Sharp MZ80-K, auf dem ich meine
- ersten Erfahrungen mit Computern machte: Der Bildschirm hatte 25 Zeilen zu
- 40 Spalten - das sollte wohl reichen. Aber wenn auch Notizen aus anderen
- Programmen heraus möglich sein sollten, z.B. Zwischenergebnisse o.ä., dann
- durfte das Window von NotePad nicht den Großteil des Bildschirms bedecken;
- also entschied ich mich für den mittleren Systemfont als Zeichensatz. Die
- Zeichen sind gerade noch lesbar und 25x40 Zeichen brauchen dann etwa ein
- Viertel der Bildschirmfläche.
- Nun ist es zwar so, daß die meisten Notizen nur begrenzte Zeit von Inter-
- esse sind; was aber, wenn man doch einmal dauerhaft etwas ablegen will?
- Also kam eine Funktion zum Speichern und Laden hinzu. Auch kann es vor-
- kommen, daß man das Notierte 'Schwarz auf Weiß' braucht - eine Drucker-
- Routine folgte. Wenn man schon mal dabei ist, I/O-Routinen zu schreiben
- und zusätzlich noch über ein Modem verfügt, liegt es nahe, auch an eine
- Ausgabe auf diesem Weg zu denken.
- Schließlich baute ich noch eine integrierte Hilfe-Funktion ein, falls tat-
- sächlich mal jemand anderer mit diesem Programm umgehen müßte.
-
- Bedienung
- ---------
- Der Editor arbeitet FullWindow-orientiert, soll heißen, man kann den Cursor
- an jede Stelle des Windows bringen und dort Eingaben oder Änderungen vor-
- nehmen. Die Cursor-Steuerung ist sowohl über die Cursortasten als auch über
- die Maus möglich. Der Editor arbeitet im Einfügemodus, das heißt daß ein
- neu eingegebenes Zeichen nicht ein altes überschreibt, sondern an der
- aktuellen Cursorposition eingefügt wird. Die üblichen Steuerfunktionen sind
- eingebaut: INSERT fügt ein Leerzeichen ein, DELETE löscht das Zeichen an
- der aktuellen Cursorposition, BACKSPACE das Zeichen vor dem Cursor.
- TAB läßt den Cursor an die nächste Tabulatorposition springen und fügt an
- den übersprungenen Stellen Leerzeichen ein (also keinen 'echten' Tabulator);
- die Tabulatorweite ist 4. Die Cursortasten steuern den Cursor wie man es im
- allgemeinen von ihnen erwartet; SHIFT und '<-' bzw. SHIFT und '->' bewegen
- den Cursor an den Zeilenanfang bzw. das Zeilenende. HOME bewegt den Cursor
- in die linke obere Ecke. SHIFT und DELETE löscht die aktuelle Zeile und
- SHIFT und HOME löscht nach Sicherheitsabfrage den gesamten Text. UNDO macht
- die letzte Lösch-Aktion rückgängig und HELP zeigt die Hilfsseite an.
- Um die Bedienung so komfortabel wie möglich zu gestalten, habe ich in das
- NotePad-Window ein Drop-down-Menü eingebaut. Es verhält sich genauso wie
- ein Menütitel der gewohnten Menüzeile, obwohl es natürlich kein 'echtes'
- Menü ist - das verhindert schon das AES (wo kommen wir da hin: entweder
- Window oder Menü! Und noch dazu in einem Accessory - tztztz!).
- Die Menüeinträge sind eigentlich selbsterklärend, daher hier nur eine
- kurze Auflistung:
- LADEN... ^L lädt eine NotePad-Datei
- SPEICHERN... ^S speichert eine NotePad-Datei
- DRUCKEN ^P druckt den Text über den parallelen Port aus
- MODEM ^M sendet den Text an die serielle Schnittstelle
- HILFE... ^H gibt die Hilfsseite aus
- ENDE ^E schickt das Accessory wieder schlafen (Text und Window-
- Position bleiben erhalten)
- Der Aufruf der Menüeinträge ist auch über die angegebenen Shortcuts möglich,
- also z.B. das Laden einer NotePad-Datei mittels CONTROL und L.
-
- Hinweise
- --------
- An einigen Stellen (insbesondere bei der Implementation des 'Menüs') mußte
- ich mich schwer mit dem AES anlegen - so etwas ist ja auch eigentlich nicht
- vorgesehen. Aber nichtsdestotrotz sehr nützlich. Außerdem wollte ich nicht
- vor dem AES kapitulieren. Leider hat solche Beharrlichkeit auch ihre
- Schattenseiten: Ich mußte Kompromisse schließen. Um nicht den Pfad der
- Tugend zu verlassen (sprich: keine 'illegalen' Funktionen oder undokumen-
- tierten Variablen zu benutzen), nahm ich in Kauf, daß an manchen Stellen
- kleinere 'Ungereimtheiten' auftreten. Damit sollte aber sichergestellt sein,
- daß NotePad mit allen TOS-Versionen lauffähig ist.
- Die erwähnten Ungereimtheiten im einzelnen:
- - Ist das NotePad-Window nicht das oberste (Top-) Window, verschwindet der
- Menütitel oben rechts in der Titelzeite des Windows.
- - Wird das NotePad-Window während der Anzeige der Hilfsseite deaktiviert
- (untopped) und von einem anderen Window ganz oder teilweise verdeckt,
- werden neu zu zeichnende Bereiche mit dem Usertext und nicht mit dem
- Hilfstext aufgebaut; das führt dazu, daß mehr oder weniger Nonsens im
- NotePad-Window zu lesen ist. Wird das NotePad-Window dann aber wieder
- aktiviert, wird der gesamte Window-Inhalt mit dem Usertext aktualisiert.
- Da allerdings nur selten neue Windows geöffnet werden, während man die
- Hilfsseite angewählt hat, fällt diese Unschönheit nur wenig ins Gewicht.
- - Klickt man bei aktivem NotePad-Window (Top-Window) in einen Bereich
- außerhalb des Windows, wird vom Screen-Manager die entsprechende Aktion
- ausgelöst - so weit, so gut. Allerdings erreicht die Nachricht über das
- Mausklick-Ereignis nicht immer auch NotePad (warum, weiß ich nicht; die
- Programmierer von Digital Research wahrscheinlich auch nicht). So ist
- es manchmal notwendig, NotePad durch einen Mausklick ins Window wieder
- zu 'wecken'. Insbesondere kann es hierbei vorkommen, daß beim Berühren
- des Menütitels das Menü nicht herunterklappt; auch in diesem Fall hilft
- ein Mausklick auf den Menütitel.
- "It's not a bug - it's a feature!" heißt die übliche Ausrede, glaube ich.
- Aber alles läßt das AES eben doch nicht mit sich machen (alleine schon
- das Redrawing von Windows ist eine Wissenschaft für sich - manches macht
- das AES oder der Screen-Manager selbst, anderes wird kategorisch abgelehnt).
-
- Ein weiterer Hinweis betrifft die NotePad-Dateien. NotePad-Texte werden
- immer komplett abgespeichert, d.h. alle 1000 möglichen Zeichen (nicht un-
- bedingt elegant, aber einfach zu implementieren). Der Text wird als ASCII-
- Text gespeichert, wobei keine Zeilenende-Kennzeichnung (CRLF) eingefügt wird.
- Das hat zwei Gründe: Zunächst ist eine Zeilenende-Kennzeichnung nicht not-
- wendig, da alle Zeilen gleich lang sind. Der zweite Grund ist allerdings
- gewichtiger und liegt im Datei-Aufzeichnungsformat des TOS. Die kleinste
- Aufzeichnungseinheit ist ein 'Cluster', der aus zwei Sektoren zu je 512
- Bytes besteht, also 1024 Bytes umfasst. Eine NotePad-Datei mit einer Länge
- von 1000 Bytes paßt demnach in einen solchen Cluster und belegt somit den
- geringstmöglichen Platz auf Diskette oder Harddisk. Hätte jede Zeile ein
- CRLF am Ende, würde eine NotePad-Datei 1050 Bytes umfassen und müßte in
- zwei Clusters abgelegt werden; damit würden aber jedes Mal 998 Bytes nutzlos
- verschwendet. Es ist jetzt auch klar, warum es keinen Sinn hätte, nur die
- wirklich mit Text gefüllten Teile des NotePad-Windows abzuspeichern: Der auf
- der Diskette bzw. Harddisk belegte Platz bliebe gleich.
- Da aber die NotePad-Dateien keine Zeilenende-Kennzeichnung aufweisen ist es
- nicht ohne weiteres möglich, sie mit anderen ASCII-Editoren zu lesen; die
- gesamte Datei würde als eine einzige Zeile angesehen werden. Dieses Problem
- läßt sich, wenn es denn unbedingt sein muß, umgehen, indem man die Zeilen-
- länge im externen Editor auf 40 Zeichen/Zeile einstellt.
-
- Schlußbemerkung
- ---------------
- NotePad Version 1.2 ist Freeware. Das heißt, das Programm darf (und soll)
- beliebig weitergegeben werden. Allerdings gelten folgende Voraussetzungen:
- - NotePad darf nicht kommerziell vertrieben werden! (Das betrifft nicht
- die Unkostenbeiträge für PD-Disketten)
- - NotePad sollte immer zusammen mit dieser Anleitung weitergegeben werden.
- - Veränderungen an NotePad müssen vor einer Weitergabe mit mir abgesprochen
- werden.
- Obwohl ich bei der Programmierung viel Mühe aufgewandt habe und NotePad bei
- mir seit Monaten fehlerfrei läuft kann ich selbstverständlich keinerlei
- Haftung für die fehlerfreie Funktion des Programms oder eventuell aus der
- Benutzung von NotePad entstehende Schäden übernehmen.
- Bei Fehlern (hoffentlich nicht!), für Fragen (warum nicht?), für Anregungen
- (sehr willkommen!) und für Zuwendungen (dito) stehe ich gerne zur Verfügung:
- Michael Zuhl
- Transvaalstr. 16
- 1000 Berlin 65
-
-
- NotePad Version 1.2 16.08.90 ©mz'90
-
-